﻿using System.Collections.Generic;
using DatabaseManager.Core.Models;

namespace DatabaseManager.Core.Interfaces
{
    /// <summary>
    /// 提供对应用系统的管理操作，如增删改查以及与数据库的关联管理。
    /// </summary>
    public interface IApplicationSystemService
    {
        /// <summary>
        /// 添加一个新的应用系统。
        /// </summary>
        void AddApplication(ApplicationSystem application);

        /// <summary>
        /// 获取所有已注册的应用系统。
        /// </summary>
        List<ApplicationSystem> GetAllApplications();

        /// <summary>
        /// 根据ID获取一个应用系统。
        /// </summary>
        ApplicationSystem GetApplicationById(int id);

        /// <summary>
        /// 更新指定的应用系统信息。
        /// </summary>
        void UpdateApplication(ApplicationSystem application);

        /// <summary>
        /// 删除一个应用系统及其相关映射关系。
        /// </summary>
        void DeleteApplication(int id);

        /// <summary>
        /// 建立或更新应用系统与数据库之间的关联。
        /// </summary>
        void MapApplicationToDatabase(int applicationId, int databaseId);

        /// <summary>
        /// 获取与某个数据库关联的所有应用系统。
        /// </summary>
        List<ApplicationSystem> GetApplicationsByDatabaseId(int databaseId);

        /// <summary>
        /// 获取与某个应用系统关联的所有数据库。
        /// </summary>
        List<RegisteredDatabase> GetDatabasesByApplicationId(int applicationId);
    }
}